package com.mhc.suzuki.service;

import com.mhc.haval.security.model.User;
import com.mhc.suzuki.bo.GpsInfoBO;
import com.mhc.suzuki.bo.SubmitTaskBO;
import com.mhc.suzuki.exception.SuzukiCommonException;
import com.mhc.suzuki.vo.WanderResultVO;

/**
 * 各角色提交方法
 * Created by HMJ on 2017/9/14.
 */
public interface SubmitTaskService {

    /**
     * 保存GPS确认字段
     *
     * @param submitTaskBO
     * @param logedUser
     * @return
     * @throws SuzukiCommonException
     */
    Boolean saveGPSInfo(SubmitTaskBO submitTaskBO, User logedUser) throws SuzukiCommonException;

    /**
     * 业务经理--是否显示GPS确认信息
     *
     * @param orderNo
     * @param logedUser
     * @return
     * @throws SuzukiCommonException
     */
    Boolean isShowGPS(String orderNo, User logedUser) throws SuzukiCommonException;

    /**
     * 业务经理--审核员提交审核
     *
     * @param submitTaskBO
     * @param logedUser
     * @return
     * @throws SuzukiCommonException
     */
    Boolean auditorSubmitTask(SubmitTaskBO submitTaskBO, User logedUser) throws SuzukiCommonException;

    /**
     * 业务员撤销申请
     *
     * @param submitTaskBO
     * @param logedUser
     * @return
     * @throws SuzukiCommonException
     */
    Boolean salesManRevokeTask(SubmitTaskBO submitTaskBO, User logedUser) throws SuzukiCommonException;

    /**
     * 业务员作废申请
     *
     * @param submitTaskBO
     * @param logedUser
     * @return
     * @throws SuzukiCommonException
     */
    Boolean invalidApply(SubmitTaskBO submitTaskBO, User logedUser) throws SuzukiCommonException;

    /**
     * 业务员发起贷款申请
     *
     * @param submitTaskBO
     * @param logedUser
     * @return
     * @throws SuzukiCommonException
     */
    Boolean salesManLoanApply(SubmitTaskBO submitTaskBO, User logedUser) throws SuzukiCommonException;

    /**
     * 业务员发起打款申请
     *
     * @param submitTaskBO
     * @param logedUser
     * @return
     * @throws SuzukiCommonException
     */
    WanderResultVO salesManPayMentApply(SubmitTaskBO submitTaskBO, User logedUser) throws SuzukiCommonException;

    /**
     * 业务员补录资料
     *
     * @param gpsInfoBO
     * @param logedUser
     * @return
     * @throws SuzukiCommonException
     */
    void updateGPSInfo(GpsInfoBO gpsInfoBO, User logedUser) throws SuzukiCommonException;

    /**
     * 查询补录资料信息
     *
     * @param orderNo
     * @return
     * @throws SuzukiCommonException
     */
    GpsInfoBO selectGPSInfo(String orderNo) throws SuzukiCommonException;

    /**
     * 业务员发起通融申请
     *
     * @param submitTaskBO
     * @param logedUser
     * @return
     * @throws SuzukiCommonException
     */
    Boolean accomApply(SubmitTaskBO submitTaskBO, User logedUser) throws SuzukiCommonException;


    /**
     * 业务员发起修改申请
     *
     * @param submitTaskBO
     * @param logedUser
     * @return
     * @throws SuzukiCommonException
     */
    Boolean updateApply(SubmitTaskBO submitTaskBO, User logedUser) throws SuzukiCommonException;

    /**
     * 资产保全业务员、内勤提交审核
     *
     * @param submitTaskBO
     * @param logedUser
     * @return
     * @throws SuzukiCommonException
     */
    Boolean assetsSubmitTask(SubmitTaskBO submitTaskBO, User logedUser) throws SuzukiCommonException;

    /**
     * 检查征信已录入后是否可以发起通融申请按钮
     *
     * @param orderNo
     * @return
     * @throws SuzukiCommonException
     */
    Boolean isShowAccomApply(String orderNo) throws SuzukiCommonException;
}
